package tool

import (
	"github.com/gin-gonic/gin"
	. "github.com/hunterhug/go_image"
	"github.com/skip2/go-qrcode"
	"net/http"
	"os"
	. "xm_shop/utils"
)

type DefaultController struct{}

// 按照宽度缩放
func (d DefaultController) Thumbnail1(context *gin.Context) {
	// 按照宽度进行比例缩放, 输入输出都是文件
	fileName := "./static/p1.jpg"
	savePath := "./static/p2.jpg"
	err := ScaleF2F(fileName, savePath, 100) // 操作的文件路径, 保存的文件路径, 宽度
	if err != nil {
		context.String(http.StatusBadRequest, "操作失败")
		return
	}
	context.String(http.StatusOK, "操作成功")
}

// 设置宽高剪切
func (d DefaultController) Thumbnail2(context *gin.Context) {
	fileName := "./static/p1.jpg"
	savePath := "./static/p3.jpg"
	err := ThumbnailF2F(fileName, savePath, 400, 200) // 400宽 200高
	if err != nil {
		context.String(http.StatusBadRequest, "操作失败")
	}
	context.String(http.StatusOK, "操作成功")
}

// 生成二维码(生成字节切片)
func (d DefaultController) Thumbnail3(context *gin.Context) {
	//							二维码的内容string  二维码压缩质量  二维码图片大小
	jpg, err := qrcode.Encode("https://baidu.com", qrcode.Medium, 256) // 返回字节切片
	if err != nil {
		context.String(http.StatusBadRequest, "操作失败")
		return
	}
	context.String(http.StatusOK, string(jpg))
}

// 生成二维码图片保存到本地
func (d DefaultController) Thumbnail4(context *gin.Context) {
	savePath := "./static/qrcode.jpg"
	err := qrcode.WriteFile("https://baidu.com", qrcode.Medium, 256, savePath) // 在本地保存一张二维码的图片
	if err != nil {
		context.String(http.StatusBadRequest, "操作失败")
		return
	}
	file, _ := os.ReadFile(savePath) // 读取指定目录下的文件, 返回字节切片
	context.String(http.StatusOK, string(file))
}

// 上传图片到oss
func (d DefaultController) UploadImg(context *gin.Context) {
	if GetOssStatus() == 1 { // 采用oss上传
		src, err := OssUploadImg(context, "image")
		if err != nil {
			context.String(http.StatusBadRequest, "图片上传失败")
			return
		}
		context.JSON(http.StatusOK, gin.H{
			"success": true,
			"url":     GetSettingFromColumn("OssDomain") + src,
		})
	} else {
		context.JSON(http.StatusBadRequest, gin.H{
			"success": false,
			"msg":     "oss未开启",
		})
	}
}
